"""
其实和java中的封装 继承 多态  原理是一样的
封装：将数据和对数据的操作封装到对象内部
继承：子类默认继承父类的所有属性和方法（非私有），子类可以重写父类的方法
多态：传入不同的对象，产生不同的结果 ，
    即不同的子类调用不同父类的方法，产生的结果不容
"""

class Dog():
    def work(self):
        print("让我咬谁我咬谁！")

class  RedDog(Dog):
    # 重写父类方法
    def work(self):
        print("我只咬穿【红色】衣服的人！")

class BlackDog(Dog):
    # 重写父类方法
    def work(self):
        print("我只咬穿【黑色】衣服的人！")

# 这里之定义传入一个父类 实际可以传入任意的子类
def doWork(dog):
    dog.work()

dog = Dog()
redDog = RedDog()
blackDog = BlackDog()
# 从下外面可以看出，传入不同的子类，执行的结果不同，这就是多态
# 多态会自动的去 查找执行那个子类的方法
doWork(dog)
doWork(redDog)
doWork(blackDog)
